home *** CD-ROM | disk | FTP | other *** search
/ Delphi Developer's Kit 1996 / Delphi Developer's Kit 1996.iso / power / source15 / clntserv.pas < prev    next >
Pascal/Delphi Source File  |  1995-12-22  |  4KB  |  169 lines

  1. unit Clntserv;
  2.  
  3. interface
  4.  
  5. uses
  6.   SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
  7.   Forms, Dialogs, StdCtrls, About, Sockets;
  8.  
  9. type
  10.   TForm1 = class(TForm)
  11.     Connect: TButton;
  12.     SendData: TButton;
  13.     Listen: TButton;
  14.     Close: TButton;
  15.     CancelListen: TButton;
  16.     Port: TEdit;
  17.     Label2: TLabel;
  18.     Edit1: TEdit;
  19.     Memo1: TMemo;
  20.     Label5: TLabel;
  21.     HelpButton: TButton;
  22.     Label1: TLabel;
  23.     IPAddr: TEdit;
  24.     Sockets1: TSockets;
  25.     procedure ConnectClick(Sender: TObject);
  26.     procedure FormCreate(Sender: TObject);
  27.     procedure SendDataClick(Sender: TObject);
  28.     procedure ListenClick(Sender: TObject);
  29.     procedure CloseClick(Sender: TObject);
  30.     procedure CancelListenClick(Sender: TObject);
  31.     procedure HelpButtonClick(Sender: TObject);
  32.     procedure Sockets1SessionConnected(Sender: TObject; Socket: Word);
  33.     procedure Sockets1SessionAvailable(Sender: TObject; Socket: Word);
  34.     procedure Sockets1DataAvailable(Sender: TObject; Socket: Word);
  35.     procedure Sockets1SessionClosed(Sender: TObject; Socket: Word);
  36.   private
  37.     { Private declarations }
  38.   public
  39.     { Public declarations }
  40.   end;
  41.  
  42. var
  43.   Form1: TForm1;
  44.   clientserver: integer;
  45.  
  46. implementation
  47.  
  48. {$R *.DFM}
  49.  
  50. procedure TForm1.ConnectClick(Sender: TObject);
  51. var
  52.   szMsg: array[0..255] of char;
  53. begin
  54.   Listen.Enabled := False;
  55.   Sockets1.IPAddr := IPAddr.Text;
  56.   Sockets1.Port := Port.Text;
  57.   Sockets1.SConnect;
  58.   clientserver := 1;
  59.   Connect.Enabled := False;
  60. end;
  61.  
  62. procedure TForm1.FormCreate(Sender: TObject);
  63. begin
  64. Port.Text := Sockets1.Port;
  65. IPAddr.Text := Sockets1.IPAddr;
  66. Connect.Enabled := True;
  67. SendData.Enabled := False;
  68. Listen.Enabled := True;
  69. Close.Enabled := False;
  70. CancelListen.Enabled := False;
  71. clientserver := 0;
  72. end;
  73.  
  74. procedure TForm1.SendDataClick(Sender: TObject);
  75. begin
  76.   Sockets1.Text := Edit1.Text;
  77. end;
  78.  
  79. procedure TForm1.ListenClick(Sender: TObject);
  80. begin
  81.   Edit1.Text := '';
  82.   Edit1.Enabled := False;
  83.   Connect.Enabled := False;
  84.   SendData.Enabled := False;
  85.   Sockets1.Port := Port.Text;
  86.   Sockets1.SListen;
  87.   Listen.Enabled := False;
  88.   Close.Enabled := False;
  89.   CancelListen.Enabled := True;
  90.   clientserver := 2;
  91.   Memo1.Lines.Add('Listening on socket('+IntToStr(Sockets1.MasterSocket)+')');
  92. end;
  93.  
  94. procedure TForm1.CloseClick(Sender: TObject);
  95. begin
  96.   Sockets1.SClose;
  97.   if clientserver <> 2 then {not server?}
  98.   begin
  99.     Connect.Enabled := True;
  100.     SendData.Enabled := False;
  101.     Listen.Enabled := True;
  102.     Close.Enabled := False;
  103.     CancelListen.Enabled := False;
  104.     clientserver := 0;
  105.   end;
  106. end;
  107.  
  108. procedure TForm1.CancelListenClick(Sender: TObject);
  109. begin
  110.   If Sockets1.SocketNumber <> INVALID_SOCKET Then
  111.     Sockets1.SClose;
  112.   If Sockets1.MasterSocket <> INVALID_SOCKET Then
  113.     Sockets1.SCancelListen;
  114.   Connect.Enabled := True;
  115.   SendData.Enabled := False;
  116.   Listen.Enabled := True;
  117.   Close.Enabled := False;
  118.   CancelListen.Enabled := False;
  119. end;
  120.  
  121. procedure TForm1.HelpButtonClick(Sender: TObject);
  122. begin
  123.   AboutBox.Show;
  124. end;
  125.  
  126. procedure TForm1.Sockets1SessionConnected(Sender: TObject; Socket: Word);
  127. begin
  128.   Connect.Enabled := False;
  129.   SendData.Enabled := True;
  130.   Listen.Enabled := False;
  131.   Close.Enabled := True;
  132.   CancelListen.Enabled := False;
  133. end;
  134.  
  135. procedure TForm1.Sockets1SessionAvailable(Sender: TObject; Socket: Word);
  136. var
  137.   new_client: TSocket;
  138. begin
  139.   new_client := Sockets1.SAccept;
  140.   Memo1.Lines.Add('Client session accepted, socket(' + IntToStr(new_client) + ')');
  141.   Listen.Enabled := False;
  142.   CancelListen.Enabled := True;
  143. end;
  144.  
  145. procedure TForm1.Sockets1DataAvailable(Sender: TObject; Socket: Word);
  146. var
  147.   Buf: string;
  148. begin
  149.   Memo1.Lines.Add('Data recevied from socket(' + IntToStr(Socket) + ')');
  150.   Sockets1.SocketNumber := Socket;
  151.   buf := Sockets1.Text;
  152.   Memo1.Lines.Add('-->' + buf + '<--');
  153.   If clientserver = 2 Then
  154.   begin
  155.     Sockets1.Text := buf;
  156.     Memo1.Lines.Add('...Buffer echoed back to client');
  157.   end;
  158. end;
  159.  
  160. procedure TForm1.Sockets1SessionClosed(Sender: TObject; Socket: Word);
  161. begin
  162.   Memo1.Lines.Add('Lost connection on socket(' + IntToStr(Socket) + ')');
  163.   Sockets1.SocketNumber := Socket;
  164.   CloseClick(Self);
  165. end;
  166.  
  167. end.
  168.  
  169.